'''
该文件主要编写的是对于excel表格用例的读取代码封装
'''
import xlrd;
import xlutils.copy as copy
'''
读取excel表格: 该方法通过传入方法中的用例文件路径，读取的sheete名称来获取指定的接口信息

参数信息: excel文件的路径   sheet的名称

返回值: 接口列表
'''
def excel_read(case_file_url,case_sheet):

    #定义一个列表，用于存放拼接好的接口信息；
    inter_list = [];

    #1. 调用xlrd对象的open_workbook方法来读取指定的用例文件
    case_file = xlrd.open_workbook(case_file_url);

    #通过读取的用例文件的sheey_by_name方法获取指定的sheet页
    case_sheet = case_file.sheet_by_name(case_sheet);

    #通过sheete对象获取用例的条数
    case_num = case_sheet.nrows;

    #通过for循环获取每一条用例信息
    for i in range(1,case_num):
        #[text:'intercase_addstu_001', text:'学生姓名非空验证', text:'学生管理', text:'http://127.0.0.1:8080/studentsystem/addstu.do', text:'post', text:'{application_type:text/joson}', text:'{"stu_name":"","stu_sex":"","stu_age":"","stu_address":"","stu_class":""}', text:'学生姓名不能为空', empty:'', empty:'']
        rows_content = case_sheet.row(i);

        #定义一个变量用来存储拼接的接口信息
        inter_info = {};
        inter_info["interface_name"] = rows_content[1].value;
        inter_info["interface_url"] = rows_content[3].value;
        inter_info["interface_method"] = rows_content[4].value;
        inter_info["interface_header"] = rows_content[5].value;
        inter_info["interface_parmrs"] = rows_content[6].value;
        inter_info["interface_think"] = rows_content[7].value;

        #将拼接好的接口信息存入列表中
        inter_list.append(inter_info);

    #获取并拼接好所有接口信息后，将接口列表返回
    return inter_list;

'''
方法:将传入该方法的信息写入到指定的excel用例中

参数: 写入的信息   用例文件路径  用例sheet名称

返回值: 无
'''
def excel_write(exe_result,test_result,case_file_url,case_sheet_name):

    #首先通过xlrd对象读取要操作的用例文件
    case_file = xlrd.open_workbook(case_file_url);


    #调用xlutils对象的cope方法来将用例文件拷贝一份，后期操作的是拷贝文件
    copy_case_file = copy.copy(case_file)

    #通过sheet名称指定要写入的sheet页
    copy_sheet = copy_case_file.get_sheet(case_sheet_name);

    #通过for循环将列表中的信息写入excel中
    for i in range(len(exe_result)):

        copy_sheet.write(i+1,8,exe_result[i]);
        copy_sheet.write(i+1, 9, test_result[i]);


    # copy_sheet.write(2,8,exe_result);
    # copy_sheet.write(2, 9, test_result);

    #通过调用拷贝文件的save方法将拷贝文件中写入的信息保存至实际用例文件中
    copy_case_file.save(case_file_url);

'''
方法: 该方法的作用是将传入方法中文件的sheet页组成列表并返回
参数: 文件的路径
返回值: sheet名称列表
'''
def get_case_sheetNameList(case_file_url):

    case_file = xlrd.open_workbook(case_file_url);

    sheet_name_list = []

    for i in case_file.sheets():

        sheet_name_list.append(i.name)

    return sheet_name_list;



